home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / programming / e / lsestuff / bits.e next >
Text File  |  1999-11-29  |  2KB  |  94 lines

  1. OPT MODULE
  2.  
  3. OPT PREPROCESS
  4.  
  5. OPT EXPORT
  6.  
  7. EXPORT PROC bitSet(long, bitnum)
  8.    MOVE.L bitnum, D1
  9.    MOVE.L long, D0
  10.    BSET.L D1, D0
  11. ENDPROC D0
  12.  
  13. EXPORT PROC bitClr(long, bitnum)
  14.    MOVE.L bitnum, D1
  15.    MOVE.L long, D0
  16.    BCLR.L D1, D0
  17. ENDPROC D0
  18.  
  19. EXPORT PROC bitGet(long, bitnum)
  20.    MOVE.L bitnum, D1
  21.    MOVE.L #1, D2
  22.    LSL.L D1, D2
  23.    MOVE.L long, D0
  24.    AND.L D2, D0
  25.    LSR.L D1, D0
  26. ENDPROC D0
  27.  
  28. #define m_SetVarBit(var, bitnum)\
  29.         MOVE.L var, D0\
  30.         MOVE.L bitnum, D1\
  31.         BSET.L D1, D0\
  32.         MOVE.L D0, var
  33.  
  34. #define m_ClrVarBit(var, bitnum)\
  35.         MOVE.L var, D0\
  36.         MOVE.L bitnum, D1\
  37.         BCLR.L D1, D0\
  38.         MOVE.L D0, var
  39.  
  40.  
  41. EXPORT PROC bigBitSet(lwfield, bitnum)
  42. ->   DEF long, longbit
  43. ->   long:=bitnum/32
  44. ->   longbit:= bitnum - (long * 32)
  45. ->   field[long] := field[long] OR Shl(1, longbit)
  46.  
  47.    MOVE.L bitnum, D0
  48.    LSR.L #5, D0 ->lwoffset
  49.    MOVE.L D0, D2
  50.    LSL.L #5, D2
  51.    MOVE.L bitnum, D1
  52.    SUB.L D2, D1 ->longbit
  53.    MOVE.L lwfield, A0
  54.    LSL.L #2, D0 -> * 4
  55.    ADD.L D0, A0
  56.    MOVE.L (A0), D2
  57.    BSET.L D1, D2
  58.    MOVE.L D2, (A0)
  59. ENDPROC
  60.  
  61. EXPORT PROC bigBitClr(lwfield, bitnum)
  62.    MOVE.L bitnum, D0
  63.    LSR.L #5, D0 ->lwoffset
  64.    MOVE.L D0, D2
  65.    LSL.L #5, D2
  66.    MOVE.L bitnum, D1
  67.    SUB.L D2, D1 ->longbit
  68.    MOVE.L lwfield, A0
  69.    LSL.L #2, D0 -> * 4
  70.    ADD.L D0, A0
  71.    MOVE.L (A0), D2
  72.    BCLR.L D1, D2
  73.    MOVE.L D2, (A0)
  74. ENDPROC
  75.  
  76.  
  77. EXPORT PROC bigBitGet(lwfield, bitnum)
  78.    MOVE.L bitnum, D2
  79.    LSR.L #5, D2 ->lwoffset
  80.    MOVE.L D2, D0
  81.    LSL.L #5, D0
  82.    MOVE.L bitnum, D1
  83.    SUB.L D0, D1 ->longbit
  84.    MOVE.L lwfield, A0
  85.    LSL.L #2, D2 -> * 4
  86.    ADD.L D2, A0
  87.    MOVE.L (A0), D0
  88.    MOVE.L #1, D2
  89.    LSL.L D1, D2
  90.    AND.L D2, D0
  91.    LSR.L D1, D0
  92. ENDPROC D0
  93.  
  94.